/**
 * 
 */

/**
 * @方法:Array.contains(node) 对Array对象的扩展
 * @功能:判断数组是否包含指定元素.
 * @参数:元素
 * @返回:是否包含
 */
Array.prototype.contains = function ( needle ) {  for (i in this) {    if (this[i] == needle) return true;  }  return false;}
/**
 * @方法:Array.remove(dx) 经常用的是通过遍历,重构数组.
 * @功能:删除数组元素.
 * @参数:dx删除元素的下标.
 * @返回:在原数组上修改数组
 */
Array.prototype.remove = function(dx) {
	if (isNaN(dx) || dx > this.length) {
		return false;
	}
	for (var i = 0, n = 0; i < this.length; i++) {
		if (this[i] != this[dx]) {
			this[n++] = this[i];
		}
	}
	this.length -= 1;
};

Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
	if (this[i] == item) return i;
	}
	return -1;
	};
Array.prototype.removeItem = function(item) {
	var index = this.indexOf(item);
	if (index > -1) {
	this.splice(index, 1);
	}
	};
// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function(fmt)   
{ // author: meizz
	var o = {   
	 "M+" : this.getMonth()+1,                 // 月份
	 "d+" : this.getDate(),                    // 日
	 "h+" : this.getHours(),                   // 小时
	 "m+" : this.getMinutes(),                 // 分
	 "s+" : this.getSeconds(),                 // 秒
	 "q+" : Math.floor((this.getMonth()+3)/3), // 季度
	 "S"  : this.getMilliseconds()             // 毫秒
	};   
	if(/(y+)/.test(fmt))   
	 fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
	for(var k in o)   
	 if(new RegExp("("+ k +")").test(fmt))   
	fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
	return fmt;   
}  

if ($.fn.validatebox){
	$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}个字符之间';
}
$.extend($.fn.validatebox.defaults.rules,{

	notGreaterThanNum:{
		/**
		 * 比较两个数字的大小 编辑页面使用：validType="notGreaterThanNum['#maxNum',
		 * '最小值不能大于最大值']" ， 参数一：需要比较的控件，参数二：提示信息
		 */
		validator: function(value, params){
			var obj = "", msg = "不能大于最大值", equalsField, equalsValue;
        	if(params){
        		obj = params[0] || obj;
        		msg = params[1] || msg;
        		equalsField =  params[2];
        	}
        	equalsValue = $(obj).val();
        	if(!equalsValue){
        		return true;// 所比较的值不存在则认为通过
        	}
			var rules = $.fn.validatebox.defaults.rules;  
			rules.notGreaterThanNum.message = msg;
			return parseFloat(value) <= parseFloat(equalsValue);
        },    
        message: ''   
	},

	notSmallerThanNum:{
		/**
		 * 比较两个数字的大小 编辑页面使用：validType="notGreaterThanNum['#maxNum',
		 * '最小值不能大于最大值']" ， 参数一：需要比较的控件，参数二：提示信息
		 */
		validator: function(value, params){
			var obj = "", msg = "不能大于最大值", equalsField, equalsValue;
        	if(params){
        		obj = params[0] || obj;
        		msg = params[1] || msg;
        		equalsField =  params[2];
        	}
        	equalsValue = $(obj).val();
        	if(!equalsValue){
        		return true;// 所比较的值不存在则认为通过
        	}
			var rules = $.fn.validatebox.defaults.rules;  
			rules.notSmallerThanNum.message = msg;
			return parseFloat(value) >= parseFloat(equalsValue);
        },    
        message: ''   
	},
	notSmallerThanSum:{
		/**
		 * 比较两个数字的大小 编辑页面使用：validType="notGreaterThanNum['#maxNum',
		 * '最小值不能大于最大值']" ， 参数一：需要比较的控件，参数二：提示信息
		 */
		validator: function(value, params){
			
			var items = null, msg = "不应小于分项之和", equalsField, equalsValue;
        	if(params){
        		items = params[0] || obj;
        		msg = params[1] || msg;
        		equalsField =  params[2];
        	}
        	var sum = 0;
        	for(var i=0; i<items.length; i++ ){
        		var item = items[i];
        		if(item && $(item).val()){
        			$(item).each(function(index,element){
        				if($(element).val()){
        					sum = floatTool ? floatTool.add(sum,parseFloat($(element).val())) : (sum + parseFloat($(element).val()));
        				}
        			})
        			
        		}
        	}
			var rules = $.fn.validatebox.defaults.rules;  
			rules.notSmallerThanSum.message = msg;
			return parseFloat(value) >= parseFloat(sum);
        },    
        message: ''
	},

	postcode:{// 验证邮政编码
		validator:function(value) {
			return (/^[0-9]\d{5}$/i).test(value);
		},
		message:'邮政编码格式不正确'
    },

    mobile: {//验证手机号
        validator: function(value){
            return (/^1[3|4|5|6|7|8|9][\d]{9}$/).test(value);
        },
        message: '必须是手机号码!如: 13502731773'
    },

    phoneWithAreaCode:{//验证电话号码（含区号）
        validator: function(value){
            return (/^[0-9]{3,4}\-[0-9]{7,8}$/).test(value);
       },
       message: '必须是含区号的电话号码!如: 0755-2923256'
   },

   //复写平台整型校验
   integer: {//验证整型   
       validator: function(value){
			return (/^[+|-]?\d+$/).test(value);
       },   
       message: '必须是整数!如: 8'  
   },
});

$(function(){
	
	if(window.Common){
		Common.setFormReadOnly = function ($scope,formObj,isReadOnly,uRLToRead,editTable) {
        	
	        if(isReadOnly){
	            $scope.isReadOnlyPage = true
	        }else {
	            if(uRLToRead){
	                $scope.isReadOnlyPage =
	                    (((platform.getUrlParam(location.href,'ACTION_OPERATE') === "V") ||
	                    (platform.getUrlParam(location.href,'ACTION_OPERATE') === "v")) ? true: false);
	            }else {
	                $scope.isReadOnlyPage = false
	            }
	        }
	        $scope.$watch('$viewContentLoaded', function() {
	        	
	            var j=0;
	            var i=0;
	            var allInput = formObj.find("input");
	            var allTextarea = formObj.find("textarea");
	            if ($scope.isReadOnlyPage){
	                $scope.AutoViewPage = true;
	                for(i = 0;i<allInput.length; i++){
	                    $(allInput[i]).attr("disabled","disabled");
	                    $(allInput[i]).attr("readOnly",true);
	                    $(allInput[i]).parent().find(".input-group-addon").unbind("click").css({
	                        'cursor':'not-allowed',
	                        "display" : "none"
	                    }).attr("disabled","disabled");
	                    /*替换为下面的语句块
	                    $(allInput[i]).css({
	                        'cursor':'not-allowed',
	                        "border-bottom" : "0"
	                    });
	                    */
	                    $(allInput[i]).attr("disabled",true)
	                }
	                $(".ui-select-container").css({
	                    'border':'0'
	                });
	                if($scope._OpenSelect && $scope._OpenSelect._changeToReadOnly && $.isFunction($scope._OpenSelect._changeToReadOnly)){
	                    $scope._OpenSelect._changeToReadOnly();
	                }
	                if($scope._DateSelect  && $scope._DateSelect._changeToReadOnly && $.isFunction($scope._DateSelect._changeToReadOnly)){
	                    $scope._DateSelect._changeToReadOnly();

	                }
	                for(j = 0;j<allTextarea.length; j++){
	                    $(allTextarea[j]).attr("disabled","disabled");
	                }
	            }else {
	                $scope.AutoViewPage = false;
	                var obj;
	                if(editTable){
	                    obj = formObj
	                }else {
	                    obj = $(".pt-edit-table")
	                }
	                var EditTableInput = obj.find("input");
	                var EditTableAllTextarea = obj.find("textarea");
	                $scope.AutoViewPage = false;
	                for(i = 0;i<EditTableInput.length; i++){
	                    $(EditTableInput[i]).removeAttr("disabled");
	                    $(EditTableInput[i]).removeAttr("readOnly");
	                    $(EditTableInput[i]).parent().find(".input-group-addon").unbind("click").css({
	                        'cursor':'pointer',
	                        "display" : "table-cell"
	                    }).attr("disabled","false");
	                    $(EditTableInput[i]).css({
	                        'cursor':'default',
	                        "border-bottom" : "1px"
	                    });
	                }
	                $(".ui-select-container").css({
	                    'border':'1px'
	                });
	                for(j = 0;j<EditTableAllTextarea.length; j++){
	                    $(EditTableAllTextarea[j]).attr("disabled","false");
	                    $(EditTableAllTextarea[j]).removeAttr("disabled");
	                }
	            }
	            $("#editTableSelectAll").removeAttr("disabled");
	            $("#editTableSelectAll").removeAttr("readonly");
	        });
	    };
	}
	
	//ueditor文件存储服务切换
	if(window.UE){
		if(!UE.Editor.prototype._bkGetActionUrl){
			UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
		}
		UE.Editor.prototype.getActionUrl = function(action) {
			
		    if (action == 'uploadimage' || action == 'uploadfile') {
		        return Common.webRoot() + '/business/fjgl/ueditor/businessfjglueditorcontroller/upload';  
		    } else { 
		        return this._bkGetActionUrl.call(this, action);  
		    }  
		};
	}
});

function arrayContains(arrayList,node){
	if(arrayList && arrayList.length && node){
		var len = arrayList.length;
		for(var i=0;i<len;i++){
			if(arrayList[i] == node){
				return true;
			}
		}
		return false;
	}
}


